
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "coupcavalier.h"
#include "coupdame.h"
#include "coupfou.h"
#include "couptour.h"
#include "piece.h"
#include "pion.h"
#include "echiquier.h"
#include "couproi.h"
#include "testechec.h"



void testechec(struct partie &parti, int echiquier[8][8],struct piece piec,int tabretourpiece[30][2])
{
    int i,j,positionroi1ligne,positionroi2ligne,positionroi1colonne,positionroi2colonne,compteur;
    int nbrecoup=0;
    positionroi1ligne=positionroi2ligne=positionroi1colonne=positionroi2colonne=10;

parti.test1=0;
    for (i=0; i<8;i++)
        {

            for(j=0;j<8;j++)
                {
                    if (echiquier[j][i]==4) //test si le roi du joueur1 est toujours sur l'échiquier
                        {
                            positionroi1ligne=j;
                            positionroi1colonne=i;
                        }
                    if (echiquier[j][i]==-4) //test si le roi du joueur2 est toujours sur l'échiquier
                        {
                            positionroi2ligne=j;
                            positionroi2colonne=i;
                        }

                }
        }
    if ((positionroi1ligne==10 && positionroi1colonne==10)) //test si positionroi1ligne à garder sa valeur initiale auquelle cas la partie est terminée
    {

        parti.test2 = 1;
    }
    if (positionroi2ligne==10 && positionroi2colonne==10)
    {
        parti.test2 = 2;
    }

    if (parti.joueur==1) //séquence du joueur2

        {

             for (i=0; i<8;i++) //on parcours l'échiqier
                {

                for(j=0;j<8;j++)
                    {
                        piec.ligne=j;
                        piec.colonne=i;


//test pour chaque pièce du joueur2 si leur déplacement possible peut atteindre la coordonnée du roi adverse


                                if (echiquier[j][i]==-1)
                                    {

                                        couptour(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {

                                                if (tabretourpiece[compteur][0]==positionroi1ligne && tabretourpiece[compteur][1]==positionroi1colonne)
                                                    {parti.test1=1;
                                                    printf("mise en echec par la tour");}
                                            }
                                            printf("\n");
                                    }
                                if (echiquier[j][i]==-2)
                                    {
                                        coupcavalier(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi1ligne && tabretourpiece[compteur][1]==positionroi1colonne)
                                                    {parti.test1=1;
                                                    printf("mise en echec par le cavalier");}
                                            }
                                    }
                                if (echiquier[j][i]==-3)
                                    {
                                        coupfou(echiquier,piec,tabretourpiece,nbrecoup);

                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi1ligne && tabretourpiece[compteur][1]==positionroi1colonne)
                                                    {parti.test1=1;
                                                    printf("mise en echec par le fou");}
                                            }
                                    }
                                if (echiquier[j][i]==-4)
                                    {
                                        couproi(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi1ligne && tabretourpiece[compteur][1]==positionroi1colonne)
                                                    {parti.test1=1;
                                                    printf("mise en echec par le roi");}
                                            }
                                    }
                                if (echiquier[j][i]==-5)
                                    {
                                        coupdame(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi1ligne && tabretourpiece[compteur][1]==positionroi1colonne)
                                                    {parti.test1=1;
                                                    printf("mise en echec par la dame");}
                                            }
                                    }
                                if (echiquier[j][i]==-6)
                                    {
                                        couppion(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi1ligne && tabretourpiece[compteur][1]==positionroi1colonne)
                                                    {parti.test1=1;
                                                    printf("mise en echec par le pion");}
                                            }
                                    }



                    }
                }
        }

        else if (parti.joueur==0) //séquence du joueur1
        {
            for (i=0; i<8;i++)
                {

                for(j=0;j<8;j++)
                    {
                        piec.ligne=j;
                        piec.colonne=i;


                                if (echiquier[j][i]==1)
                                    {
                                        couptour(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi2ligne && tabretourpiece[compteur][1]==positionroi2colonne)
                                                    {parti.test1=2;
                                                    printf("mise en echec par la tour");
                                                    }
                                            }
                                    }
                                if (echiquier[j][i]==2)
                                    {
                                        coupcavalier(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi2ligne && tabretourpiece[compteur][1]==positionroi2colonne)
                                                    {parti.test1=2;
                                                    printf("mise en echec par le cavalier");
                                                    }
                                            }
                                    }
                                if (echiquier[j][i]==3)
                                    {
                                        coupfou(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi2ligne && tabretourpiece[compteur][1]==positionroi2colonne)
                                                    {parti.test1=2;
                                                    printf("mise en echec par le fou");
                                                   }
                                            }
                                    }
                                if (echiquier[j][i]==4)
                                    {
                                        couproi(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi2ligne && tabretourpiece[compteur][1]==positionroi2colonne)
                                                    {parti.test1=2;
                                                    printf("mise en echec par le roi");
                                                    }
                                            }
                                    }
                                if (echiquier[j][i]==5)
                                    {
                                        coupdame(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi2ligne && tabretourpiece[compteur][1]==positionroi2colonne)
                                                    {parti.test1=2;
                                                    printf("mise en echec par la dame");
                                                    }
                                            }
                                    }
                                if (echiquier[j][i]==6)
                                    {
                                        couppion(echiquier,piec,tabretourpiece,nbrecoup);
                                        for(compteur=0;compteur<nbrecoup;compteur++)
                                            {
                                                if (tabretourpiece[compteur][0]==positionroi2ligne && tabretourpiece[compteur][1]==positionroi2ligne)
                                                    {parti.test1=2;
                                                    printf("mise en echec par le pion");}
                                            }
                                    }
                            }
                }

                }

}
